#include "recursos.h"

/*------------------------------------------------------------------------------
	Constructor
------------------------------------------------------------------------------*/
CRecursos::CRecursos()
{
	m_iNumTexturasEscCargadas=0;
	m_iNumTiposEnem=0;
	
	int i,j;
	
	for (i=0;i<MAX_ALTURA_BLOQUES;i++)	
		for (j=0;j<MAX_LARGO_BLOQUES;j++)
		{
			m_tEscenario.m_aBloques[i][j]=-1;
		}
}

/*------------------------------------------------------------------------------
	Destructor
------------------------------------------------------------------------------*/
CRecursos::~CRecursos()
{}

/*------------------------------------------------------------------------------
	Resource loader
------------------------------------------------------------------------------*/
Bool CRecursos::Cargar()
{
	Bool resultado;
	CargarEscenario("Nivel_Nuevo.lvl");	
	CargarTexturasScrolls(0);
	CargarTexturasEscenario();	
	
	resultado=Bool(	m_PJ.Cargar("pj.md2")					&&
					m_Disparos[0].Cargar("shuriken.md2") 	&&
					m_Disparos[1].Cargar("kunai.md2") 		&&					
					CargarEnemigos()		&&
					m_TexturasParticulas[0].Cargar("particle.png",PATH_PARTICULAS) &&
					m_TexturasParticulas[1].Cargar("particle2.png",PATH_PARTICULAS,GL_RGBA));
	
	if(!resultado)
		printf("ERROR: No se pudieron cargar los recursos.\n");
	
	return resultado;
}

/*------------------------------------------------------------------------------
	Enemies loader
------------------------------------------------------------------------------*/
Bool CRecursos::CargarEnemigos()
{
	return Bool(m_Enemigos[0].Cargar("enem01.md2"));
}

/*------------------------------------------------------------------------------
	Textures loader
------------------------------------------------------------------------------*/
Bool CRecursos::CargarTexturasScrolls(int Fase)
{
	Bool result=FALSE;
	switch(Fase)
	{
		case 0:
			m_TexturasScrolls[0].Cargar("cielo.png",PATH_SCROLL,GL_RGBA); 
			m_TexturasScrolls[1].Cargar("bamboo.png",PATH_SCROLL,GL_RGB);
			m_TexturasScrolls[2].Cargar("bamboo2.png",PATH_SCROLL,GL_RGBA);
			m_TexturasScrolls[3].Cargar("bamboo3.png",PATH_SCROLL,GL_RGBA);
		break;
		
		case 1:
		break;
	}
		
	return result;	
}


/*------------------------------------------------------------------------------
	Level editor textures loader
------------------------------------------------------------------------------*/
Bool CRecursos::CargarTexturasEditor()
{
	m_TexturasEditor[0].Cargar("brocha.png",PATH_EDITOR,GL_RGBA);
	m_TexturasEditor[1].Cargar("brocha2.png",PATH_EDITOR,GL_RGBA);
	m_TexturasEditor[2].Cargar("goma.png",PATH_EDITOR,GL_RGBA);	


	return TRUE;
}

/*------------------------------------------------------------------------------
	Level textures loader
------------------------------------------------------------------------------*/
Bool CRecursos::CargarTexturasEscenario(char szPath[255])
{
	m_TexturasEscenario[0].Cargar("00.png",szPath,GL_RGBA);	
	m_TexturasEscenario[1].Cargar("01.png",szPath,GL_RGBA);
	m_TexturasEscenario[2].Cargar("02.png",szPath,GL_RGBA);
	m_TexturasEscenario[3].Cargar("03.png",szPath,GL_RGBA);
	m_TexturasEscenario[4].Cargar("04.png",szPath,GL_RGBA);
	m_TexturasEscenario[5].Cargar("05.png",szPath,GL_RGBA);
	m_TexturasEscenario[6].Cargar("06.png",szPath,GL_RGBA);
	m_TexturasEscenario[7].Cargar("07.png",szPath,GL_RGBA);
	m_TexturasEscenario[8].Cargar("08.png",szPath,GL_RGBA);
	m_TexturasEscenario[9].Cargar("09.png",szPath,GL_RGBA);
	m_TexturasEscenario[10].Cargar("10.png",szPath,GL_RGBA);
	m_TexturasEscenario[11].Cargar("11.png",szPath,GL_RGBA);
	m_TexturasEscenario[12].Cargar("12.png",szPath,GL_RGBA);
	m_TexturasEscenario[13].Cargar("13.png",szPath,GL_RGBA);
	m_TexturasEscenario[14].Cargar("14.png",szPath,GL_RGBA);

//	m_TexturasEscenario[13].Cargar("tile01bn13.png",szPath,GL_RGBA);
			
	m_TexturasEscenario[TEXTURA_PLAT_INICIO].Cargar("p01.png",szPath,GL_RGBA);
	m_TexturasEscenario[TEXTURA_PLAT_CENTRO].Cargar("p02.png",szPath,GL_RGBA);
	m_TexturasEscenario[TEXTURA_PLAT_FIN].Cargar("p03.png",szPath,GL_RGBA);	
	m_TexturasEscenario[TEXTURA_PLAT_SOLA].Cargar("p04.png",szPath,GL_RGBA);	
	
	return TRUE;
	
}
/*------------------------------------------------------------------------------
	Level loader
------------------------------------------------------------------------------*/
Bool CRecursos::CargarEscenario(const char *szNombreArchivo)
{		
   	char path_file[255];   	
	FILE *fich=NULL;
	
	strcpy(path_file,"");
	strcpy(path_file,PATH_NIVELES);	
	strcat(path_file,szNombreArchivo);
	
	fich=fopen(path_file,"r+b");	
	
	if(!fich)
	{
		printf("! ERROR: No se puede abrir el fichero [%s]\n",path_file);		
		return FALSE;
	}
	
	if(!fread((void *)(&m_tEscenario),sizeof(TEscenario),1, fich ))
	{
		printf("! ERROR: No se puede leer el escenario\n");
		return FALSE;
	}
		
	fclose(fich);
	
	return TRUE;
	
}
/*------------------------------------------------------------------------------
------------------------------------------------------------------------------*/
void CRecursos::Liberar()
{
	int i;
	
	m_PJ.Liberar();
	m_Enemigos[0].Liberar();

	for(i=0;i<NUM_TEXTURAS_EDITOR;i++)
		m_TexturasEditor[i].Liberar();

	
	for(i=0;i<MAX_TIPOS_DISPAROS;i++)
		m_Disparos[i].Liberar();
		
	for(i=0;i<MAX_TIPOS_PARTICULAS;i++)
		m_TexturasParticulas[i].Liberar();
		
	for(i=0;i<MAX_SCROLLS;i++)
		m_TexturasScrolls[i].Liberar();

	for(i=0;i<MAX_TEXTURAS_ESC;i++)
		m_TexturasEscenario[i].Liberar();

	
	printf("- Recursos Liberados\n");
}
